home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 1996-05-01 | 6.6 KB | 231 lines | [ TEXT/MPS ]
{ File: Patches.p Contains: Patch Manager Interfaces. Version: Technology: System 8 Release: Universal Interfaces 3.0d3 on Copland DR1 Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved. Bugs?: If you find a problem with this file, send the file and version information (from above) and the problem description to: Internet: apple.bugs@applelink.apple.com AppleLink: APPLE.BUGS } {$IFC UNDEFINED UsingIncludes} {$SETC UsingIncludes := 0} {$ENDC} {$IFC NOT UsingIncludes} UNIT Patches; INTERFACE {$ENDC} {$IFC UNDEFINED __PATCHES__} {$SETC __PATCHES__ := 1} {$I+} {$SETC PatchesIncludes := UsingIncludes} {$SETC UsingIncludes := 1} {$IFC UNDEFINED __TYPES__} {$I Types.p} {$ENDC} {$IFC UNDEFINED __KERNEL__} {$I Kernel.p} {$ENDC} {$IFC UNDEFINED __ORDEREDITEMS__} {$I OrderedItems.p} {$ENDC} {$PUSH} {$ALIGN MAC68K} {$LibExport+} {$IFC FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED } CONST kOSTrapType = 0; kToolboxTrapType = 1; TYPE TrapType = SignedByte; CONST OSTrap = 0; { old name } ToolTrap = 1; { old name } { GetTrapAddress and SetTrapAddress are obsolete and should not be used. Always use NGetTrapAddress and NSetTrapAddress instead. The old routines will not be supported for PowerPC apps. } {$IFC OLDROUTINENAMES AND NOT GENERATINGCFM } FUNCTION GetTrapAddress(trapNum: UInt16): UniversalProcPtr; {$IFC NOT GENERATINGCFM} INLINE $301F, $A146, $2E88; {$ENDC} PROCEDURE SetTrapAddress(trapAddr: UniversalProcPtr; trapNum: UInt16); {$IFC NOT GENERATINGCFM} INLINE $301F, $205F, $A047; {$ENDC} {$ENDC} FUNCTION NGetTrapAddress(trapNum: UInt16; tTyp: TrapType): UniversalProcPtr; PROCEDURE NSetTrapAddress(trapAddr: UniversalProcPtr; trapNum: UInt16; tTyp: TrapType); FUNCTION GetOSTrapAddress(trapNum: UInt16): UniversalProcPtr; {$IFC NOT GENERATINGCFM} INLINE $301F, $A346, $2E88; {$ENDC} PROCEDURE SetOSTrapAddress(trapAddr: UniversalProcPtr; trapNum: UInt16); {$IFC NOT GENERATINGCFM} INLINE $301F, $205F, $A247; {$ENDC} FUNCTION GetToolTrapAddress(trapNum: UInt16): UniversalProcPtr; {$IFC NOT GENERATINGCFM} INLINE $301F, $A746, $2E88; {$ENDC} PROCEDURE SetToolTrapAddress(trapAddr: UniversalProcPtr; trapNum: UInt16); {$IFC NOT GENERATINGCFM} INLINE $301F, $205F, $A647; {$ENDC} FUNCTION GetToolboxTrapAddress(trapNum: UInt16): UniversalProcPtr; {$IFC NOT GENERATINGCFM} INLINE $301F, $A746, $2E88; {$ENDC} PROCEDURE SetToolboxTrapAddress(trapAddr: UniversalProcPtr; trapNum: UInt16); {$IFC NOT GENERATINGCFM} INLINE $301F, $205F, $A647; {$ENDC} { // Moved here from StdCLib pascal Boolean TrapAvailable (UInt16 trapNumber); } {$ENDC} { FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED } {$IFC FOR_SYSTEM8_PREEMPTIVE } TYPE PatchID = ^LONGINT; PatchChainID = ^LONGINT; PatchableProcPtr = Ptr; PatchOptions = OptionBits; CONST kPatchEnabledBit = 0; kPatchCompatibilityBit = 1; kPatchOptionalBit = 2; kPatchEnabledMask = $00000001; kPatchCompatibilityMask = $00000002; kPatchOptionalMask = $00000004; TYPE PatchName = OrderedItemName; PatchNamePtr = ^PatchName; PatchOrderRequirements = OrderRequirements; PatchOrderRequirementsPtr = ^PatchOrderRequirements; PatchDescriptionPtr = ^PatchDescription; PatchDescription = RECORD originalRoutine: PatchableProcPtr; { A normal (probably imported) proc ptr. } patchRoutine: PatchableProcPtr; { A normal (probably imported) proc ptr. } thisPatchName: PatchName; thisPatchOrdering: PatchOrderRequirements; installOptions: PatchOptions; installResult: OSStatus; thisPatchID: PatchID; { Set if installed OK. } thisCallThroughProc: PatchableProcPtr; { Set if installed OK. } rejectingPatchID: PatchID; { Set if there was an installation error. } END; PatchDescriptionPtrPtr = ^PatchDescriptionPtr; PatchHeaderOptions = OptionBits; CONST kRequiredPatchErrorsMask = $00000001; { Any installation errors in required patches? } kOptionalPatchErrorsMask = $00000002; { Any installation errors in optional patches? } kPatchHeaderTag = 'Ptch'; kPatchHeaderVersion = 1; TYPE PatchHeaderPtr = ^PatchHeader; PatchHeader = RECORD tag: OSType; { Must be 'Ptch'. } version: UInt32; { The data structure version. } flags: PatchHeaderOptions; { Set by CFM with install status. } count: ItemCount; { The total size of the "patches" array. } patches: ^PatchDescriptionPtr; { Pointer to description array. } END; CONST kPatchInformationVersion = 1; TYPE PatchInformationPtr = ^PatchInformation; PatchInformation = RECORD patchChain: PatchChainID; patchingRoutine: PatchableProcPtr; patchOptions: PatchOptions; patchName: PatchName; patchOrder: PatchOrderRequirements; END; CONST kPatchChainInformationVersion = 1; TYPE PatchChainInformationPtr = ^PatchChainInformation; PatchChainInformation = RECORD kernelProcess: KernelProcessID; chainRoot: PatchableProcPtr; END; { * Maps a ProcPtr to a PatchChainID. * If the ProcPtr is a patch, return noErr and Chain * If the ProcPtr is a root, return noErr and Chain * If the ProcPtr is not a patch or a root, return an error } FUNCTION GetPatchChainFromProcPtr(theKernelProcess: KernelProcessID; theRoutine: PatchableProcPtr; VAR thePatchChain: PatchChainID): OSStatus; C; { * Maps a ProcPtr to a PatchID. * If the ProcPtr is a patch, return noErr and the PatchID * If the ProcPtr is a root, return notAPatchErr * If the ProcPtr is not a patch or a root, return notAPatchErr } FUNCTION GetPatchFromProcPtr(theKernelProcess: KernelProcessID; theRoutine: PatchableProcPtr; VAR thePatch: PatchID): OSStatus; C; FUNCTION GetPatchChainInformation(thePatchChain: PatchChainID; version: PBVersion; VAR patchChainInfo: PatchChainInformation): OSStatus; C; FUNCTION GetPatchInformation(thePatchID: PatchID; version: PBVersion; VAR patchInfo: PatchInformation): OSStatus; C; { * Iteration functions: * Get all the chains in a KernelProcess, and * Get all the patches in a chain } FUNCTION GetPatchChainsInKernelProcess(theKernelProcess: KernelProcessID; requestedPatchChains: ItemCount; VAR totalPatchChains: ItemCount; VAR thePatchChains: PatchChainID): OSStatus; C; FUNCTION GetPatchesInPatchChain(thePatchChain: PatchChainID; requestedPatches: ItemCount; VAR totalPatches: ItemCount; VAR thePatches: PatchID): OSStatus; C; FUNCTION EnablePatch(thePatch: PatchID): OSStatus; C; FUNCTION DisablePatch(thePatch: PatchID): OSStatus; C; {$ENDC} {$ALIGN RESET} {$POP} {$SETC UsingIncludes := PatchesIncludes} {$ENDC} {__PATCHES__} {$IFC NOT UsingIncludes} END. {$ENDC}